<?php
global $objClases,$basedatos;

if(getParametro($_FILES,'arCompreso',0) != 0){
	//Guardamos en /tmp
	$ubicacion = $objClases->get('ruta_absoluta') . '/tmp/';
	
	//Revisamos el tipo de archivo que estamos reciviendo
	$tipo = strtolower($_FILES['arCompreso']['type']);
	//FF -> application/zip
	//M$ -> application/x-zip-compressed
	//Existe el archivo "temporal"
	if (isset($_FILES['arCompreso']['tmp_name'])) {
		if (strpos($tipo,'zip') != 0) {
			$archivo = $ubicacion.$_FILES['arCompreso']['name'];
			$nombreArchivo = str_replace(
				'.zip','',strtolower($_FILES['arCompreso']['name'])
			);
			if (!copy($_FILES['arCompreso']['tmp_name'], $archivo)){
				echo '<script>window.parent.clearMensaje(); window.parent.mensaje("Error al tratar de subir el archivo.",parent._MENSAJE_ERROR); parent.setMensaje("");</script>';
			}else{
				//Mostramos mensaje al usuario mientras descomprimimos el archivo
				echo '<script>window.parent.setMensaje("Analizando archivo...");</script>';
				flush();
				
				//Descomprimimos
				
				//Libreria de PhpConcept.net
				require_once($objClases->get('ruta_absoluta') . '/includes/pclzip/pclzip.lib.php');
				
				
				$archivoZip = new PclZip($archivo);
				if($lista = $archivoZip->listContent()){
					$requeridos = array('modulos/' . $nombreArchivo . '/modulo.xml',
										'modulos/' . $nombreArchivo . '/index.php');
					$encontrados = array(0,0);
					for($ar=0;$ar<sizeof($lista);$ar++) {
						$archivo_encontrado = $lista[$ar]['filename'];
						for($req=0;$req<count($requeridos);$req++){
							if($requeridos[$req] == $archivo_encontrado)
								$encontrados[$req] = 1;
						}
					}
					
					for($enc=0;$enc < count($requeridos) ; $enc++)
						if(!$encontrados[$enc]){
							echo '<script>window.parent.clearMensaje(); window.parent.mensaje("No contiene los archivos necesarios. Si utiliza un servidor *Nix: El nombre del archivo y la extensi&oacute;n deben estar en mayusculas.",parent._MENSAJE_ERROR); parent.setMensaje("");</script>';
							exit();
						}
					echo '<script>window.parent.setMensaje("Extrayendo archivos...");</script>';	
					
					//Extraemos
  					if ($archivoZip->extract(PCLZIP_OPT_PATH, $ubicacion,
                        PCLZIP_OPT_REMOVE_PATH,'') == 0){
    					echo '<script>window.parent.clearMensaje(); window.parent.mensaje("' . $archivoZip->errorInfo(true) . '",parent._MENSAJE_ERROR); parent.setMensaje("");</script>';
						exit();
  					}
					
					//Redireccionamos al navegador para que vea la informacion del modulo
					echo "<script>window.parent.redirecciona('$nombreArchivo');</script>";
					flush();
					exit();
				}else
					//No se pudo abrir el archivo
					echo '<script>parent.clearMensaje(); parent.mensaje("Zip posiblemente corrupto.",parent._MENSAJE_ERROR);</script>';
			}
		}else
			echo '<script>window.parent.mensaje("Solo se permiten archivos .zip.",window.parent._MENSAJE_ERROR); window.parent.clearMensaje();</script>';
	}else 
		echo '<script>parent.clearMensaje(); parent.mensaje("Error al tratar de subir el archivo.",parent._MENSAJE_ERROR);</script>';
	exit();
}else if(getParametro($_POST,'modulo') != ''){
	//Instalamos el modulo
	$modulo = getParametro($_POST,'modulo');
	$archivo = $objClases->get('ruta_absoluta') . "tmp/modulos/$modulo/modulo.xml";
	$direccion = $objClases->get('ruta_absoluta') . 'tmp/modulos/' . $modulo;
	if(file_exists($archivo)){
		require_once($objClases->get('ruta_absoluta') . '/includes/ModuloXML.php');
		$mxml = new ModuloXML($archivo);
		
		//Revisamos que este completo
		$completo = true;
		$faltantes = array();
		foreach($mxml->getArchivos() as $arc){
			if((!file_exists($direccion . '/' . $arc))
			   && (!file_exists($arc))){
				$completo = false;
				$faltantes[] = $arc;
			}	
		}
		if(!$completo){
			$arcfaltantes='';
			foreach($faltantes as $faltante)
				if($arcfaltantes == '')
					$arcfaltantes = $faltante;
				else
					$arcfaltantes .= '|' .$faltante;
			echo '<script>window.parent.clearMensaje(); window.parent.mensaje("El modulo no est&aacute; completo.",parent._MENSAJE_ERROR); window.parent.faltantes("'. $arcfaltantes .'",0);</script>';
			exit();
		}
		
		//Buscamos los archivo requeridos
		$completo = true;
		$faltantes = array();
		$ruta = $objClases->get('ruta_absoluta');
		
			//JS
		foreach($mxml->getRequeridosJs() as $arc){
			if(!file_exists($ruta . $arc)){
				$completo = false;
				$faltantes[] = $arc;
			}	
		}
		
			//CSS
		foreach($mxml->getRequeridosCss() as $arc){
			if(!file_exists($ruta . $arc)){
				$completo = false;
				$faltantes[] = $arc;
			}	
		}
		
		if(!$completo){
			$arcfaltantes='';
			foreach($faltantes as $faltante)
				if($arcfaltantes == '')
					$arcfaltantes = $faltante;
				else
					$arcfaltantes .= '|' .$faltante;
			echo '<script>window.parent.faltantes("'. $arcfaltantes .'",1);</script>';
			exit();
		}
		
		//Movemos los archivos a su respectiva posicion
		
		
	}
	exit();
}else if(getParametro($_GET,'opc') == 'infomodulo'){
	$archivo = $objClases->get('ruta_absoluta') . 'tmp/modulos/' . getParametro($_GET,'modulo') . '/modulo.xml';
	
	if(file_exists($archivo)){
		require_once($objClases->get('ruta_absoluta') . '/includes/ModuloXML.php');
		$mxml = new ModuloXML($archivo);
		$nombre = $mxml->getNombre();
		$informacion = $mxml->getInformacion();
		
		//Mostramos informacion del modulo
		?>
		<form name="frmInstalar" id="frmInstalar" action="<?php echo $objClases->get('sitio_vivo'); ?>/administracion/?sec=modulos&amp;modo=asincrono" method="post" target="iframeInstalar">
			<input type="hidden" name="modulo" id="mod" value="<?php echo getParametro($_GET,'modulo'); ?>" />
			
			<!-- Panel de mensajes -->
		    <div id="panel" class="mensaje">
				<span id="panel-mensaje">&nbsp;</span>
		    </div>
		    <!-- Fin panel -->
			
			<!-- Informacion del modulo -->
			<h2 align="center"><?php echo $nombre; ?></h2>
			<?php echo $informacion; ?>
			
			<table align="center">
				<tr>
					<td>
						<input type="submit" name="btnInstalar" id="btnInstalar" value="Instalar" class="botones" onclick="javascript: setMensaje('Why_?');" />
					</td>
					<td>
						<input type="button" name="btnCancelar" id="btnCancelar" value="Cancelar" class="botones" onclick="javascript: window.location='index.php?sec=modulos';" />
					</td>
				</tr>
			</table>
			<p align="center">
				<img id="imgCargando" width="16" height="16" alt="" title="" src="<?php echo $objClases->get('sitio_vivo'); ?>/administracion/modulos/mod_modulos/blank.png" />
				<span id="mensajes" class="mensajesiDbf"></span>
			</p>
			<iframe name="iframeInstalar" id="iframeInstalar"></iframe>
		</form>
		<?php
	}
}else{
?>
<form name="frmModulo" id="frmModulo" action="<?php echo $objClases->get('sitio_vivo'); ?>/administracion/?sec=modulos&amp;modo=asincrono" method="post" enctype="multipart/form-data" target="iframeUpload">
	
	<!-- Panel de mensajes -->
    <div id="panel" class="mensaje">
	<span id="panel-mensaje">&nbsp;</span>
    </div>
    <!-- Fin panel -->
	
	<!-- Cargar compreso -->
	<h2 align="center">Agregar modulo</h2>
	<table id="cargarCompreso" class="tablas" align="center">
		<tr>
			<th colspan="2" class="LineaA"></th>
		</tr>
		<tr>
			<td align="right">
				<label for="arCompreso">
					Modulo:
				</label>
			</td>
			<td>
				<input type="file" name="arCompreso" id="arCompreso" class="archivos" />
			</td>
		</tr>
		<tr>
			<td>&nbsp;</td>
			<td><span class="comentarios">Archivo compreso del modulo a agregar (.zip o .tar.gz)</span></td>
		</tr>
	</table>
	<!-- Fin cargar -->

	<table align="center">
		<tr>
			<td align="center">
				<input type="submit" name="btnEnviar" id="btnEnviar" value="Cargar modulo" class="botones" onclick="validaExtensiones(); return false;" />
			</td>
		</tr>
	</table>
	<p align="center">
		<img id="imgCargando" width="16" height="16" alt="" title="" src="<?php echo $objClases->get('sitio_vivo'); ?>/administracion/modulos/mod_modulos/blank.png" />
		<span id="mensajes" class="mensajesiDbf"></span>
	</p>
	<iframe name="iframeUpload" id="iframeUpload"></iframe>
</form>
<?php } ?>